using KayakMes.Common.Dtos.TeamDTO.Input;
using KayakMes.Common.Dtos.TeamDTO.Output;
using KayakMes.Common.Result;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KayakMes.ProcessManagement.Application.Scheduling
{
    public interface IEmployeeService
    {
        /// <summary>
        /// 添加员工信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> Add(EmployeeInput input);
        
        /// <summary>
        /// 删除员工信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<int> DeleteEmployee(long id);
        
        /// <summary>
        /// 根据ID查询员工信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<EmployeeOutput> FindEmployee(long id);
        
        /// <summary>
        /// 查询员工列表（无条件查询）
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiPaging<EmployeeOutput> GetEmployeeList(GetEmployeeInput input);
        
        /// <summary>
        /// 根据班组ID查询员工列表
        /// </summary>
        /// <param name="teamSetId"></param>
        /// <returns></returns>
        ApiPaging<EmployeeOutput> GetEmployeesByTeamSetId(long teamSetId);
        
        /// <summary>
        /// 批量修改员工班组
        /// </summary>
        /// <param name="employeeIds">员工ID列表</param>
        /// <param name="teamSetId">班组ID</param>
        /// <returns></returns>
        ApiResult<int> BatchUpdateEmployeeTeamSet(List<long> employeeIds, long teamSetId);
    }
} 